package com.liqw.crawler.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import java.time.LocalDate;
import java.util.List;
import com.liqw.crawler.model.Address;

/**
 * 房子实体类
 * 存储爬取到的房源详细信息
 */
@Entity
@Table(name = "house")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class House {

    @Id
    private String id;

    /** 房源标题 */
    @NotBlank(message = "房源标题不能为空")
    private String title;

    /** 房源描述 */
    @Column(length = 2000)
    private String description;

    /** 房源类型(新房/二手房/租房/商铺/写字楼等) */
    private String propertyType;

    /** 地址 */
    @Embedded
    private Address address;

    /** 价格(总价或月租) */
    private double price;

    /** 建筑面积 */
    private double area;

    /** 卧室数量 */
    private int bedrooms;

    /** 客厅数量 */
    private int livingRooms;

    /** 卫生间数量 */
    private int bathrooms;

    /** 所在楼层 */
    private int floor;

    /** 总楼层数 */
    private int totalFloors;

    /** 朝向 */
    private String orientation;

    /** 装修情况 */
    private String decoration;

    /** 创建时间 */
    @CreationTimestamp
    private LocalDate createdAt;

    /** 更新时间 */
    private LocalDate updatedAt;

    /** 图片URL列表 */
    @Column(length = 4000)
    private String photos;

    /** 视频URL */
    private String videoUrl;
}